import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Main {
    public static void main(String[] args) {
        // 1. 创建真实对象
        UserService realService = new UserServiceImpl();

        // 2. 创建InvocationHandler，关联真实对象
        InvocationHandler handler = new LoggingHandler(realService);

        // 3. 动态生成代理对象
        UserService proxy = (UserService) Proxy.newProxyInstance(
                realService.getClass().getClassLoader(),  // 类加载器
                realService.getClass().getInterfaces(),   // 实现的接口
                handler                                   // 调用处理器
        );

        // 4. 通过代理对象调用方法
        proxy.login("admin");
        proxy.logout();
    }
}
